package com.oms.util;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 数据处理类
 * */
public class DataDeal {

	// 传入对象，处理空值
	
	public static String clearNull(Object obj) {
		String cnull = (obj == null) ? "" : obj.toString();
		return cnull;
	}

	public static String clearNull(Object obj, String defaultValue) {
		String cnull = (obj == null) ? defaultValue : obj.toString();
		return cnull;
	}

	public static String removeNull(Object obj, String defaultValue) {
		String cnull = (obj == null || obj.toString().trim().length() == 0) ? defaultValue
				: obj.toString();
		return cnull;
	}

	/**
	 * 将日期转化为字符串
	 * 
	 * @param date
	 * @param type
	 * */
	public static String DateCStr(Date date, String type) {
		SimpleDateFormat sf = new SimpleDateFormat(type);
		return sf.format(date);
	}

	/****
	 * 保留一位小数
	 * */
	public static double meg(double i) {
		int b = (int) Math.round(i * 10); // 小数点后两位前移，并四舍五入
		double c = ((double) b / 10.0); // 还原小数点后两位
		if ((c * 10) % 5 != 0) {
			int d = (int) Math.round(c); // 小数点前移，并四舍五入
			c = ((double) d); // 还原小数点
		}
		return c;
	}

	/***
	 * 保留二位小数
	 * */
	public static String two(double i) {
		DecimalFormat decimalformat = new DecimalFormat("0.00");
		return decimalformat.format(i);
	}

	/**
	 * 处理对象，将对象转为日期格式
	 * 
	 * @param obj
	 *            对象
	 * @param type
	 *            转换的日期类型，如：yyyy-MM-dd
	 * */
	public static String Object_DateCStr(Object obj, String type) {
		return DateCStr(ObjCDate(obj, type), type);
	}

	/**
	 * 处理对象，将对象转为日期格式
	 * 
	 * @param obj
	 *            对象
	 * @param type
	 *            转换的日期类型，如：yyyy-MM-dd
	 * */
	public static Date ObjCDate(Object obj, String type) {
		SimpleDateFormat sf = new SimpleDateFormat(type);
		String strDate = clearNull(obj);
		try {
			if (strDate.equals("")) {
				return null;
			}
			Date date = sf.parse(strDate);
			return date;
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return null;
	}

	/**
	 * 将日期格式化
	 * 
	 * @param Object
	 *            对象
	 * @param type
	 *            转换的日期类型，如：yyyy-MM-dd
	 * */
	public static String formatDate(Object _date) {
		String date = clearNull(_date);
		if (date.length() > 10 && date.indexOf(".") > -1) {
			date = date.substring(0, 10);
		}
		return date;
	}

	/**
	 *字数过多，以省略号显示
	 * 
	 * @param title
	 *            标题
	 *@param len
	 *            标题显示最长长度 20
	 * */
	public static String overleapTitle(String strTitle, int maxlen) {
		if (strTitle == null || strTitle.equals("")) {
			return strTitle;
		}
		int len = strTitle.getBytes().length;
		len = (len % 2 == 0) ? len : (len + 1);
		len = len / 2;
		if (len > maxlen) {
			strTitle = strTitle.substring(0, maxlen) + "...";
		}
		return strTitle;
	}

	/**
	 * 得到在当前时间之前num天的日期，返回格式为type;
	 * */
	public static String getDateBefore(String type, int num) {
		long l = System.currentTimeMillis();
		// System.out.println("--------------------gm----------------"+l);
		l = l - (num * 24 * 3600 * 1000);
		SimpleDateFormat sd = new SimpleDateFormat(type);
		return sd.format(new Date(l));
	}

	/**
	 * 得到在指定日期之前num天的日期，返回格式为type;
	 * */
	public static String getDateBefore(Date date, String type, int num) {
		long dl = date.getTime();
		// System.out.println("--------------------gm----d------------"+dl);
		dl = dl - (num * 24 * 3600 * 1000);
		SimpleDateFormat sd = new SimpleDateFormat(type);
		return sd.format(new Date(dl));
	}
}